package cc.rengu.igas.momp.common.enums;

/**
 * 营销活动类型枚举值
 *
 * @author Jinan Liu
 * @date 2020/4/1 10:00
 */
public enum McTypeEnum {
    /**
     * 00-满额立减固定金额
     */
    REDUCTION_FIXED_AMOUNT("00"),
    /**
     * 01-满额立减随机金额
     */
    REDUCTION_RANDOM_AMOUNT("01"),
    /**
     * 02-满额固定折扣
     */
    REDUCTION_FIXED_RATE("02"),
    /**
     * 03-满额随机折扣
     */
    REDUCTION_RANDOM_RATE("03"),
    /**
     * 10-卡券类-代金券
     */
    COUPON_ALL("10"),
    /**
     * 11-卡券类-免费类-代金券
     */
    COUPON_FREE("11"),
    /**
     * 12-卡券类-购买类-代金券
     */
    COUPON_PAID("12"),
    /**
     * 20-手续费减免优惠活动
     */
    MCHNT_FEE_DISCOUNT("20"),
    /**
     * 30-代理商分润活动
     */
    AGENT_CASHBACK("30"),
    /**
     * 40-收银员返现活动
     */
    CASHER_CASHBACK("40"),
    /**
     * 90-对客类营销活动
     */
    TO_CLIENT("90"),
    /**
     * 99-所有营销活动类型
     */
    ALL_MC_TYPE("99"),
    /* 营销活动大类-卡券类 */
    MC_TYPE_CP("1"),
    /* 营销活动大类-减免类 */
    MC_TYPE_MO("0"),
    /* 营销活动大类-商户手续费优惠类 */
    MC_TYPE_MFD("2"),
    /* 营销活动大类-减免类 */
    MC_TYPE_APS("3"),
    /* 营销活动大类-商户手续费优惠类 */
    MC_TYPE_CCB("4"),
    /* 其他类型营销活动 */
    MC_TYPE_OTHER("O");

    private String mcTypeCode;

    McTypeEnum(String mcTypeCode) {
        this.mcTypeCode = mcTypeCode;
    }

    public String getMcTypeCode() {
        return mcTypeCode;
    }

    public void setMcTypeCode(String mcTypeCode) {
        this.mcTypeCode = mcTypeCode;
    }

    public static McTypeEnum getByValue(String value) {
        for (McTypeEnum mcTypeEnum : values()) {
            if (mcTypeEnum.getMcTypeCode().equals(value)) {
                return mcTypeEnum;
            }
        }
        return null;
    }

    public static McTypeEnum getInstance(String mcType) {
        switch (mcType) {
            case "REDUCTION_FIXED_AMOUNT":
            case "REDUCTION_RANDOM_AMOUNT":
            case "REDUCTION_FIXED_RATE":
            case "REDUCTION_RANDOM_RATE":
                /* 减免类营销活动 */
                return MC_TYPE_MO;
            case "COUPON_ALL":
            case "COUPON_FREE":
            case "COUPON_PAID":
                /* 卡券类营销活动 */
                return MC_TYPE_CP;
            case "MCHNT_FEE_DISCOUNT":
                /* 商户手续费优惠类营销活动 */
                return MC_TYPE_MFD;
            default:
                /* 其他类型营销活动 */
                return MC_TYPE_OTHER;
        }
    }

}
